<?php

class DepartamentoController extends Zend_Controller_Action{

    public function init(){
        X\Permiso::paraController();
        $this->em = Zend_Registry::getInstance()->entitymanager;
    }

    public function indexAction(){

        $facultades = $this->em->createQueryBuilder()
                               ->select    ('f.idFacultad')
                               ->addselect ('f.nombre')
                               ->from      ('Default_Model_Facultad', 'f')
                               ->orderBy   ('f.nombre', 'asc')
                               ->getQuery  ()
                               ->execute   ();

        $this->view->facultades = Zend_Json::encode(Array(
            "success" => true,
            "total"   => count($facultades),
            "rows"    => $facultades
        ));

    }

    public function ajaxCrearAction(){

        $codigoFacultad = $this->_request->getPost('facultad');
        $nombre         = $this->_request->getPost('nombre'  );
        $sigla          = $this->_request->getPost('sigla'   );
        $permiso        = $this->_request->getPost('permiso' );

        $facultad = $this->em->find('Default_Model_Facultad', $codigoFacultad);

        // query
        $existeNombre = $this->em->createQueryBuilder()
                             ->select   ('count(d.nombre)')
                             ->from     ('Default_Model_Departamento', 'd')
                             ->where    ("d.nombre='".pg_escape_string($nombre)."'")
                             ->getQuery ()
                             ->getSingleScalarResult();

        $existeSigla = $this->em->createQueryBuilder()
                            ->select   ('count(d.sigla)')
                            ->from     ('Default_Model_Departamento', 'd')
                            ->where    ("d.sigla='".pg_escape_string($sigla)."'")
                            ->getQuery ()
                            ->getSingleScalarResult();

        // check
        if ($existeNombre > 0)
            throw new Exception('Ya existe un departamento con este nombre.');

        if ($existeSigla > 0)
            throw new Exception('Ya existe un departamento con esta sigla.');

            $departamento = new Default_Model_Departamento;
            // cargar
            $departamento->setFacultad        ($facultad);
            $departamento->setNombre          ($nombre);
            $departamento->setSigla           ($sigla);
            $departamento->setPermiteCarreras ($permiso);

            // guardar
            $this->em->persist($departamento);
            $this->em->flush();

        // json
        X\Msg::Success('El departamento se ha cargado exitosamente.');

    }


}

